home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / X11R4 / cmds / X / ddx / sprite.X11R3 / hdr / cg6reg.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-10-12  |  2.9 KB  |  117 lines

  1. /* @(#)cg6reg.h 1.7 89/01/25 SMI */
  2.  
  3. /*
  4.  * Copyright 1988-1989, Sun Microsystems, Inc.
  5.  */
  6.  
  7. #ifndef    cg6reg_DEFINED
  8. #define    cg6reg_DEFINED
  9.  
  10. /*
  11.  * CG6 frame buffer hardware definitions.
  12.  */
  13.  
  14.  
  15. /* Physical frame buffer and color map addresses */
  16. /*
  17.  * The base address is defined in the configuration file, e.g. GENERIC.
  18.  * These constants are the offset from that address.
  19.  */
  20.  
  21. #ifdef sun4c
  22. /* Sbus offsets */
  23. #define CG6_ADDR_ROM        0
  24. #define CG6_ADDR_CMAP        0x200000
  25. #define CG6_ADDR_FHC        0x300000
  26. #define CG6_ADDR_THC        0x301000
  27. #define CG6_ADDR_FBC        0x700000
  28. #define    CG6_ADDR_TEC        0x701000
  29. #define CG6_ADDR_COLOR        0x800000
  30. #else
  31. /* P4 offsets */
  32. #define CG6_ADDR_CMAP        0x200000
  33. #define CG6_ADDR_P4REG        0x300000
  34. #define CG6_ADDR_FHC        0x300000
  35. #define CG6_ADDR_THC        0x301000
  36. #define CG6_ADDR_ROM        0x380000
  37. #define CG6_ADDR_OVERLAY    0x400000    /* FAKE */
  38. #define CG6_ADDR_ENABLE        0x600000
  39. #define CG6_ADDR_FBC        0x700000
  40. #define    CG6_ADDR_TEC        0x701000
  41. #define CG6_ADDR_COLOR        0x800000
  42. #endif
  43.  
  44. #define CG6_ADDR_FBCTEC        CG6_ADDR_FBC
  45. #define CG6_ADDR_FHCTHC        CG6_ADDR_FHC    
  46.  
  47. #define CG6_CMAP_SZ        8192
  48. #define CG6_FBCTEC_SZ        8192
  49. #define CG6_FHCTHC_SZ        8192
  50. #define CG6_ROM_SZ        (64*1024)
  51. #define CG6_FB_SZ        (1024*1024)
  52.  
  53. /*
  54.  * Offsets of TEC/FHC into page
  55.  */
  56. #define CG6_TEC_POFF        0x1000
  57. #define CG6_THC_POFF        0x1000
  58.  
  59. /*
  60.  * Virtual (mmap offsets) addresses
  61.  */ 
  62. #define CG6_VBASE        0x70000000
  63. #define CG6_VADDR(x)        (CG6_VBASE + (x) * 8192)
  64.  
  65. /*
  66.  * CG6 Virtual object addresses
  67.  */
  68. #define CG6_VADDR_FBC        CG6_VADDR(0)
  69. #define    CG6_VADDR_TEC        (CG6_VADDR_FBC + CG6_TEC_POFF)
  70. #define CG6_VADDR_CMAP        CG6_VADDR(1)
  71. #define CG6_VADDR_FHC        CG6_VADDR(2)
  72. #define CG6_VADDR_THC        (CG6_VADDR_FHC + CG6_THC_POFF)
  73. #define CG6_VADDR_ROM        CG6_VADDR(3)
  74. #define CG6_VADDR_COLOR        (CG6_VADDR_ROM + CG6_ROM_SZ)
  75.  
  76. #define CG6_VADDR_FBCTEC    CG6_VADDR_FBC
  77. #define CG6_VADDR_FHCTHC    CG6_VADDR_FHC
  78. /*
  79.  * to map in all of lego, use mmapsize below, and offset CG6_VBASE
  80.  */
  81. #define MMAPSIZE(dfbsize)    (CG6_VADDR_COLOR-CG6_VBASE+dfbsize)
  82.  
  83. /*
  84.  * convert from address returned by pr_makefromfd (eg. mmap) 
  85.  * to CG6 register set.
  86.  */
  87. #define CG6VA_TO_FBC(base) \
  88.     ((struct fbc*)  (((char*)base)+(CG6_VADDR_FBC-CG6_VBASE)))
  89. #define CG6VA_TO_TEC(base)  \
  90.     ((struct tec*)  (((char*)base)+(CG6_VADDR_TEC-CG6_VBASE)))
  91. #define CG6VA_TO_FHC(base)  \
  92.     ((u_int*)     (((char*)base)+(CG6_VADDR_FHC-CG6_VBASE)))
  93. #define CG6VA_TO_THC(base)  \
  94.     ((struct thc*)  (((char*)base)+(CG6_VADDR_THC-CG6_VBASE)))
  95. #define CG6VA_TO_DFB(base)  \
  96.     ((short*)     (((char*)base)+(CG6_VADDR_COLOR-CG6_VBASE)))
  97. #define CG6VA_TO_ROM(base)  \
  98.     ((u_int*)    (((char*)base)+(CG6_VADDR_ROM-CG6_VBASE)))
  99. #define CG6VA_TO_CMAP(base) \
  100.     ((struct cg6_cmap*) (((char*)base)+(CG6_VADDR_CMAP-CG6_VBASE)))
  101.  
  102.  
  103. /* (Brooktree DAC) definitions */
  104.  
  105. /* number of colormap entries */
  106. #define CG6_CMAP_ENTRIES    256
  107.  
  108. struct cg6_cmap {
  109.     u_int    addr;        /* address register */
  110.     u_int    cmap;        /* color map data register */
  111.     u_int    ctrl;        /* control register */
  112.     u_int    omap;        /* overlay map data register */
  113. };
  114.  
  115. #endif    !cg6reg_DEFINED
  116.  
  117.